package com.itheima.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/*
       过滤器的 顶层接口是  Filter  重写方法
    1:定义一个类 实现接口 javax.servelt.Filter,重写方法
    2: 配置拦截操作
       在类上 加上一个注解 @WebFilter
       还没有被spring发现
       因为这个技术 不属于 spring 所以 需要启动类上加注解  被发现
         @ServletComponentScan
 */
//@WebFilter(value = "/*")//拦截的请求路径  /* 所有请求都拦截
public class MyFilter implements Filter {
    /**
     *   实现对 请求的拦截   可以对资源进行放行 也可以不放行
     * @param servletRequest   请求对象
     * @param servletResponse  响应对象
     * @param filterChain      决定是否放行的对象  (保安)
     * @throws IOException
     * @throws ServletException
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("myFilter 拦截住了 请求！！！");
        // 放行吗？
        // 放行的语法
        filterChain.doFilter(servletRequest, servletResponse);
          //        执行放行操作(放行请求对象,放行响应对象)
    }

    // 过滤器对象 初始化方法  什么是降临到世间
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("！！！呱呱坠地！！！");
    }

   // 销毁方法  对象死亡之前 执行
    @Override
    public void destroy() {
        System.out.println("垂死病中惊坐起");
    }
}
